1. Technical Field
The present invention relates to network interfacing and more particularly to an apparatus and method for programming hardware resources of a network interface.
2. Background Art
Network interfacing devices are commonly used to transmit data between a host computer and network communication systems, such as a Local Area Network (LAN). One primary function of a network interface is to selectively receive data from a remote workstation. The data may also be received from other network devices such as servers, routing stations (routers), etc. Ideally, data is selected by the network interface based on a match between a destination address associated with the data and a predetermined target address associated with the network interface.
Network interfaces typically include at least one register, or memory device, to store the target addresses corresponding to specific workstations. Hence, the target addresses may be used to selectively receive or route data. The register can be programmed by hardware associated with the network interface or the host workstation. Alternatively, the register can be programmed by software executed in the memory of the host workstation.
In operation, the network interface receives one or more data frames, each of which includes a destination address, from a remote workstation or network device. The destination address of each data frame is compared to the target address (or addressees) stored in the register. If the destination address of the data frame matches one of the target addresses stored in the register, then the network interface accepts and transfers the data frame to the data bus of the workstation. If the destination address of the data frame does not match any target address stored in the register, then the network interface ignores the data frame.
In large network systems, such as Wide Area Networks (WANs) or the Internet, routers are used to direct data frames to subsequent routers and/or workstations. Routers typically include a table for storing a plurality of target address values. During routing operations, the destination addresses of incoming data frames are compared to the target address values stored in the table in order to determine the most efficient path for routing each data frame. Many routers are also configured to transmit statistical information regarding traffic density along various routes. The statistical information is used to update the target address values stored in the table. Hence, the target addresses stored in the table are dynamically updated based on traffic density and the distance to a subsequent workstation or router.
Routers typically include a Central Processing Unit (CPU) or functional control circuit to handle dynamic updating of target addresses stored in the table. During a given update procedure, one or more of the target addresses will be changed. Regardless of the number of entries being updated, all entries in the table are invalidated during the update procedure. Hence, in the instance where only one target address must be updated, routing functions associated with all other target addresses in the table must be suspended. Consequently, numerous data frames may be lost and routing time is increased.
In certain situations, it is necessary for a router or workstation to recognize the destination address or header information contained in a data frame from an external network in order to maintain operational efficiency. There currently exists several protocols to transfer data within and between different networks. For example, many LANs and WANs utilize the Internet Packet Exchange (IPX) protocol to deliver data. Intranets and the Internet utilize a protocol known as TCP/IP. TCP/IP is actually a combination of two protocols (Transmission Control Protocol and Internet Protocol) that work together to deliver data. Each type of network includes multiple layers for manipulating data from an application prior to transmission over a physical link. Each layer encapsulates a header containing various information, such as control information and address information, into the data frames transmitted. Accordingly, routing and transmission of data frames may be optimized by a network interface capable of examining multiple headers within a data frame.
A primary disadvantage associated with current methods of selectively receiving and routing data is the period of inactivity associated with the updating of address registers in a workstation or router. Another disadvantage associated with current methods of selectively receiving and routing data is the inability to independently modify individual target addresses in a routing table. A further disadvantage associated with current methods of selectively receiving and routing data frames is the inability to examine information encapsulated within various headers in the data frame.
There is a need for methods and apparatus for programming target address entries in a network interface and which can selectively update individual target addresses in a routing table.
These and other needs are attained by the present invention, wherein an address register or an entry in an address filter table includes a field for indicating whether the address register or entry is available for use in routing received data frames, thereby eliminating the need to disable unmodified registers.
In accordance with an aspect of the present invention, an apparatus for runtime programming of hardware resources in a network interface comprises: an interface configured to receive data frames from a remote station, each of the data frames including a header and a destination address contained in the header; a media access controller including an address filter table for storing a plurality of entries, each entry including an address field for storing a target address value, an enable field for indicating the validity of the entry, and logic for preventing access to invalid entries; and a device manager for updating the entries. The media access controller is configured to compare the destination address of each received data frame to the target addresses stored in valid entries of the address filter table, and route each received data frame to its associated destination address. In preferred embodiments of the invention, the media access controller may be further configured to invalidate the enable field upon detecting an update operation by the device manager, and validate the enable field upon detecting completion of the update operation. The enable field allows dynamic updating of individual entries in the address filter table without interfering with routing operations performed using the remaining entries.
According to another aspect of the invention, a method of programming hardware resources in a network interface comprises the steps: selecting an entry within an address filter table containing a plurality of entries; writing a predetermined value into at least one field contained in the selected entry; detecting initiation of the writing step; invalidating an enable field contained in the selected entry to prevent access to the selected entry during routing operations; detecting completion of the writing step; and validating the enable field contained in the selected entry to allow access to the selected entry during routing operations. The present invention allows efficient updating of entries in the address table regardless of the number of data transfers required to update the entry. Hence, individual entries may be updated without interrupting continued operation on remaining entries by invalidating the enable field at the commencement of the write operation.
Additional objects, advantages, and novel features of the present invention will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following or may be learned by practice of the invention. The objects and advantages of the invention may be realized and attained by means of the instrumalities and combinations particularly pointed out in the appended claims.